package com.googlecode.attention.services;
///*-
// * OldMessagePollerImpl.java
// *
// * $LastChangedBy:  $
// * $LastChangedRevision:  $
// * $LastChangedDate:  $
// * $HeadURL: $
// *
// * Copyright (c) 2008, Stein Gunnar Bakkeby
// * All rights reserved.
// * Redistribution and use in source and binary forms, with or without
// * modification, are permitted provided that the following conditions are met:
// *
// *     * Redistributions of source code must retain the above copyright
// *       notice, this list of conditions and the following disclaimer.
// *     * Redistributions in binary form must reproduce the above copyright
// *       notice, this list of conditions and the following disclaimer in the
// *       documentation and/or other materials provided with the distribution.
// *     * Neither the name of Stein Gunnar Bakkeby nor the names of its
// *       contributors may be used to endorse or promote products derived
// *       from this software without specific prior written permission.
// *
// * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND ANY
// * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
// * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
// * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
// * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// */
//package com.googlecode.attention.services;
//
//import static com.googlecode.attention.AttentionLogStatments.*;
//
//import java.io.IOException;
//import java.io.Serializable;
//import java.rmi.RemoteException;
//import java.util.Queue;
//import java.util.concurrent.ArrayBlockingQueue;
//
//import com.googlecode.attention.MessagePollerProxy;
//import com.googlecode.attention.Pollable;
//import com.googlecode.attention.Status;
//import com.googlecode.attention.at.AtListener;
//import com.googlecode.attention.at.Gateway;
//import com.googlecode.attention.at.ListPDU;
//import com.googlecode.attention.util.Settings;
//import com.googlecode.attention.util.ThreadTerminator;
//
//
//public class OldMessagePollerImpl implements Pollable, Runnable, AtListener<ListPDU> {
//  
//  private Gateway gateway;
//  private ThreadTerminator<?> terminator;
//  private MessagePollerProxy proxy;
//  
//  
//  private boolean autoPoll;
//  private int     autoPollTime = -1;
//  private Status  autoPollStatus;
//  private boolean autoPollExecute;
//  private String commandToExecute;
//  
//  public OldMessagePollerImpl(final Gateway gateway,
//                           final Settings settings,
//                           final String[] args,
//                           final ThreadTerminator<?> terminator) {
//    this.gateway = gateway;
//    this.terminator = terminator;
//    try {
//      this.proxy = new MessagePollerProxy(this);
//    } catch (RemoteException e) {
//      e.printStackTrace(); // TODO log something
//    }
//    
//    readConfiguration(settings);
//    parseArguments(args);
//  }
//  
//  private void readConfiguration(final Settings settings) {
//    autoPoll = settings.getBoolean("auto_poll_for_messages");
//    autoPollTime = settings.getInteger("auto_poll_time");
//    autoPollStatus = Status.getStatus(settings.getString("auto_poll_status"));
//    autoPollExecute = settings.getBoolean("auto_poll_execute_command");
//    commandToExecute = settings.getString("auto_poll_command_to_execute");
//  }
//  
//  public void parseArguments(final String[] args) {
//    for (int i = 0; i < args.length; i++) {
//      final String arg = args[i].toLowerCase();
//      /* TODO reconsider arguments regarding auto poll */
//      if (arg.equals("-p") || arg.equals("--poll-time")) {
//        if (++i < args.length) {
//          try {
//            autoPollTime = Integer.parseInt(args[i]);
//          } catch (NumberFormatException e) {
//            ATTENTION_010.log(arg, args[i]);
//          }
//        }
//      }
//      /* TODO reconsider arguments regarding auto poll */
//      if (arg.equals("poll")) {
//        if (++i < args.length) {
//          autoPollStatus = Status.getStatus(args[i].toLowerCase());
//        }
//      }
//    }
//  }
//  
//  public void run() {
//    if (autoPoll) {
//      while (!terminator.isTerminating()) {
//        
//        poll(autoPollStatus);
//  
//        try {
//          Thread.sleep(autoPollTime);
//        } catch (InterruptedException e) {
//          e.printStackTrace();
//        }
//      }
//    }
//  }
//  
//  public void poll(final Status pollStatus) {
//    final ListPDU listMessages = new ListPDU();
//    listMessages.setListener(this);
//    listMessages.prepareExecute(pollStatus);
//    gateway.addAT(listMessages);
//  }
//  
//  public void atFailure(final ListPDU command) {
//    ATTENTION_009.log(command.getCommand());
//  }
//
//  public void atSuccess(final ListPDU command) {
//    proxy.addMessages(command.getPDUs());
//    if (autoPollExecute
//     && commandToExecute != null
//     && !commandToExecute.equals("")) {
//      final Runtime runtime = Runtime.getRuntime();
//      try {
//        runtime.exec(commandToExecute);
//      } catch (SecurityException e) {
//        e.printStackTrace(); // TODO log
//      } catch (IOException e) {
//        e.printStackTrace(); // TODO log
//      }
//    }
//  }
//  
//  public MessagePollerProxy getProxy() {
//    return proxy;
//  }
//}